#include<iostream>
#include<vector>
using namespace std;
namespace yxt
{
    //因为这个优先级队列的基本定义就是根据大小优先级进行排列的适配器,和堆类似所以用顺序表进行改造适配即可
    template<class T,class Container = vector<T>>
    class priority_queue
    {
        Container queue;
    public:
        //进行改造因为涉及到堆的实现方式，这边建议进行复习，然后在学习
        //首先因为是适配所以默认构造之类的并不用写
        //库中有对应的区间进行构造
        template<class Inputiterator>
        priority_queue(Inputiterator first,Inputiterator last)
        {
            //因为是构造，有一段区间了我们就要在这段区间上进行构建堆
            //先进行读入
            while(first != last)
            {
                queue.push_back(*first);
                first++;
            }
            //向下调整进行建堆

        }
        void adjust(int pos)
        {
            //进行向下调整，因为是从父节点进行向下一层层的调整，所以在调整完一层之后我们要将，节点指针向下走
            //同时要判断节点合法性
            int parents = pos;
            int child = 2 * parents + 1;//先假设是左节点符合优先级，记录下来。
            if(queue[child] < queue[child + 1])
            {
                ++child;
            }
        }
        void push(const T& val)
        {
            //因为是对堆的实现所以在压入的时候，要关心到具体的大小关系
            //所谓的压入是指插入到堆的底部然后向上进行调整建堆。
        }
        
    };
    
}
int main()
{

}